#/usr/bin/perl
#<<DOC;
#Votre Nom : Cécile Darmé et Elodie Nijean
#JANVIER 2009
 #usage : perl parcours-arborescence-fichiers repertoire-a-parcourir
 #Le programme prend en entrée le nom du répertoire contenant les fichiers
 #à traiter
 #Le programme construit en sortie un fichier structuré contenant sur chaque
 #ligne le nom du fichier et le résultat du filtrage :
#<FICHIER><NOM>du fichier</NOM></FICHIER><CONTENU>du filtrage</CONTENU></FICHIER>
#DOC
#-----------------------------------------------------------

my $rep="$ARGV[0]";

# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
my $DUMPFULL1=""; # $DUMPFULL1 est une variable qui concatène en sortie l'ensemble des extractions. C'est une chaîne de caractères
# on initialise une variable contenant le flux de sortie = valeur de la racine de l'arborescence
my $DUMPFULL2="";
my %tablelignes=(); # On crée une variable un tableau des lignes pour les mémoriser

my $output1="SORTIE-culture.txt"; # $OUTPUT1 est une variable contenant le fichier en sortie = "sortie-cinema.txt"
my $output2="SORTIE-medias.txt"; # $OUTPUT1 est une variable contenant le fichier en sortie = "sortie-cinema.txt"
if (!open (FILEOUT1,">$output1")) { die "Pb a l'ouverture du fichier $output1"};

if (!open (FILEOUT2,">$output2")) { die "Pb a l'ouverture du fichier $output2"};
print FILEOUT2 "$DUMPFULL2";
#----------------------------------------
&parcoursarborescencefichiers($rep); #recurse!
#----------------------------------------

#----------------------------------------------
sub parcoursarborescencefichiers { # "sub" permet de définir un sous-programme
    my $path = shift(@_); # on récupère le premier élément du tableau dans la variable $path puisqu'on a besoin de tous les arguments de la liste. "@_"  stocke l'ensemble des arguments passés en paramètre à un sous-programme.
    opendir(DIR, $path) or die "can't open $path: $!\n"; ouvrir un répertoire.
    my @files = readdir(DIR); # " donne l'ensemble des ressources du répertoire lu qui sont mises dans la variable $files.
    closedir(DIR); # ferme le répertoire
    foreach my $file (@files) 
			{ 
			next if $file =~ /^\.\.?$/; # Si le fichier est nommée "." ou "..", on passe au suivant.
			$file = $path."/".$file; # On réécrit le chemin complet de la ressource sur laquelle on se trouve (à partir du point de départ du programme). Si la ressource est un fichier, on lance le traitement de filtrage. Si c'est un répertoire, on relance le parcours.
				if (-d $file) 
					{ # "-d" permet de repérer des répertoires. Si $file est un répertoire, on relance le parcours.
					&parcoursarborescencefichiers($file); #recurse! ---- Sous-programme
					}

				if (-f $file) 
					{ # "-f" permet de repérer les fichiers.

					if($file=~/0,2-3246,1-0,0.xml/) 
					{
				    	open (FILEINPUT, $file);
						
						print $file, "\n"; 
						while ($ligne = <FILEINPUT>) 
						{						
							if (($ligne=~/<description>(.*)<\/description>/)) 
							{
							$recupa=$1;
															
							$recupa= &nettoyage($recupa);
							$DUMPFULL1= $DUMPFULL1.$recupa."\n";								
							}
    		
						} # fin de boucle while
					}
					
					if($file=~/0,2-3236,1-0,0.xml/) 
					{ 
				    	open (FILEINPUT, $file);
						
						print $file, "\n"; 
						while ($ligne = <FILEINPUT>) 
						{						
							if (($ligne=~/<description>(.*)<\/description>/)) 
							{
							$recupa=$1;
															
							$recupa= &nettoyage($recupa);
							$DUMPFULL2= $DUMPFULL2.$recupa."\n";								
							}
        
						} # fin de boucle  while
					print FILEOUT1 "$DUMPFULL1";
					print FILEOUT2 "$DUMPFULL2";
					} 					

 					}
 
			    } # fin de "foreach"
}


 
#----------------------------------------------
sub nettoyage {
								my $recup= shift (@_);
							$recup =~s/Retrouvez *l.*ensemble *des//g;
							$recup =~s/Lisez *l.*int.*gralit.* *de *l.*article *pour*plus*d.*information.//g; 
							$recup=~s/^(.+)&lt;img width='1' height='1'.*$//g ;
							$recup=~s/Toute l'actualit.* au moment de la connexion//g;
							$recup=~s/Toute l'actualitA© au moment de la connexion/ /g;
							$recup=~s/&#38;#39;/\'/g; 
							$recup=~s/&#38;#34;/\"/g; 
							$recup=~s/&#233;/é/g; 				
							$recup=~s/&#234;/è/g; 
							$recup=~s/&amp;eacute;/é/g;
							$recup=~s/&amp;egrave;/è/g;
							$recup=~s/&amp;ecirc;/ê/g;
							$recup=~s/&amp;euml;/ë/g;
							$recup=~s/&amp;iuml;/ï/g;
							$recup=~s/&amp;icirc;/\î/g;
							$recup=~s/&amp;ocirc;/\ô/g;
							$recup=~s/&amp;ccedil;/\ç/g;
							$recup=~s/&amp;agrave;/\à/g;
							$recup=~s/&amp;acirc;/â/g;
							$recup=~s/&amp;uuml;/ü/g;
							$recup=~s/&amp;ucirc;/û/g;
							$recup=~s/&amp;ugrave;/ù/g;
							$recup=~s/&amp;Ouml;/Ö/g;
							$recup=~s/&#38;/&/g;
							$recup=~s/&lt;/\</g;
							$recup=~s/&gt;/\>/g;
							$recup=~s/( )*(\n)( )*\n//g; #supprime les sauts de ligne répétés
							return $recup;
}
